import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    public int solve(String s) {
        ArrayList<Integer> res = function(s, 0);
        return res.get(0);
    }

    private ArrayList<Integer> function(String s, int index) {
        Stack<Integer> stack = new Stack<>();
        char op = '+';
        int num = 0;
        int i;
        for (i = index; i < s.length(); i++) {
            if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
                num = num * 10 + s.charAt(i) - '0';
                if (i != s.length() - 1) {
                    continue;
                }
            }
            if (s.charAt(i) == '(') {
                ArrayList<Integer> res = function(s, i + 1);
                num = res.get(0);
                i = res.get(1);
                if (i != s.length() - 1) {
                    continue;
                }
            }
            switch (op) {
                case '+' :
                    stack.push(num);
                    break;
                case '-' :
                    stack.push(-num);
                    break;
                case '*' :
                    stack.push(stack.pop() * num);
                    break;
            }
            num = 0;
            if (s.charAt(i) == ')') {
                break;
            } else {
                op = s.charAt(i);
            }
        }
        int sum = 0;
        while (!stack.isEmpty()) {
            sum += stack.pop();
        }
        ArrayList<Integer> temp = new ArrayList<>();
        temp.add(sum);
        temp.add(i);
        return temp;
    }
}
